﻿#define _CRT_SECURE_NO_WARNINGS 1    

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

//1.回调函数
//int fufu1(int x, int y)
//{
//	return x + y;
//}
//int fufu2(int x, int y)
//{
//	return x - y;
//}
//int fufu3(int x, int y)
//{
//	return x * y;
//}
//int fufu4(int x, int y)
//{
//	return x / y;
//}
//void mune()
//{
//	printf("*********************************\n");
//	printf("******** 1.fufu1 2.fufu2 ********\n");
//	printf("******** 3.fufu3 4.fufu4 ********\n");
//	printf("************ 0.exit *************\n");
//	printf("*********************************\n");
//
//}
//void calc(int(*pa)(int, int))
//{
//	int x = 0;
//	int y = 0;
//	int ret = 0;
//	printf("输入2个操作数\n");
//	scanf("%d %d", &x, &y);
//	ret = (*pa)(x, y);
//	printf("%d\n", ret);
//}
//int main()
//{
//	int input = 0;
//	do
//	{
//		mune();
//		printf("请选择:");
//		scanf("%d", &input);
//
//		switch (input)
//		{
//		case 1:
//			calc(fufu1);
//			break;
//		case 2:
//			calc(fufu2);
//			break;
//		case 3:
//			calc(fufu3);
//			break;
//		case 4:
//			calc(fufu4);
//			break;
//		case 0:
//			printf("退出游戏\n");
//			break;
//		default:
//			printf("选择错误，重新选择\n");
//			break;
//		}
//
//	} while (input);
//
//	return 0;
//}

//2.qsort使⽤举例
//struct Stu
//{
//	char name[20];
//	int age;
//};
//int fufu1(const void* p1, const void* p2)
//{
//	return strcmp(((struct Stu*)p1)->name, ((struct Stu*)p2)->name);
//}
//int main()
//{
//	struct Stu arr[] = { {"lisi",20},{"zhangsan",28},{"wangwu",18} };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	qsort(arr, sz, sizeof(arr[0]), fufu1);
//	return 0;
//}


//3.转移表
//int fufu1(int x, int y)
//{
//	return x + y;
//}
//int fufu2(int x, int y)
//{
//	return x - y;
//}
//int fufu3(int x, int y)
//{
//	return x * y;
//}
//int fufu4(int x, int y)
//{
//	return x / y;
//}
//void mune()
//{
//	printf("*********************************\n");
//	printf("******** 1.fufu1 2.fufu2 ********\n");
//	printf("******** 3.fufu3 4.fufu4 ********\n");
//	printf("************ 0.exit *************\n");
//	printf("*********************************\n");
//
//}
//int main()
//{
//	int input = 0;
//	
//	do
//	{
//		int (*PaArr[])(int, int) = { NULL,fufu1,fufu2,fufu3,fufu4 };
//		mune();
//		printf("请选择:");
//		scanf("%d", &input);
//		if (input == 0)
//		{
//			printf("退出计算器\n");
//		}
//		else if (input >= 1 && input <= 4)
//		{
//		    int x = 0;
//			int y = 0;
//			int ret = 0;
//			printf("请输入2个操作数\n");
//			scanf("%d %d", &x, &y);
//			ret = PaArr[input](x, y);
//			printf("%d\n", ret);
//		}
//		else
//		{
//			printf("选择错误，重新选择\n");
//		}
//
//	} while (input);
//	return 0;
//}

//4.找单身狗2
//void fufu(int arr[], int sz, int* pa1, int* pa2)
//{
//	int ret = 0;
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		ret ^= arr[i];//整个数组异或结果等于3
//	}
//	int pos = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if ((ret >> i) & 1 == 1)
//		{
//			pos = i;//pos = 0
//			break;
//		}
//	}
//	for (i = 0; i < sz; i++)
//	{
//		if ((arr[i] >> pos) & 1 == 1)
//		{
//			*pa1 ^= arr[i];
//		}
//		else
//		{
//			*pa2 ^= arr[i];
//
//		}
//	}
//
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,1,2,3,4,6 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int fufu1 = 0;
//	int fufu2 = 0;
//    fufu(arr, sz, &fufu1, &fufu2);
//	printf("%d %d", fufu1, fufu2);
//	return 0;

//}
// 
//int main()
//{
//	char ch = 'c';
//	char* pc = &ch;
//	*pc = 'w';
//	printf("%c\n", *pc);
//	return 0;
//}

//int main()
//{
//	char* ch = "abcdef";
//	printf("%c", "abcdef"[3]);
//	return 0;
//}

//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int (*PaArr)[10] = &arr;
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", *(PaArr+i));
//	}
//	return 0;
//}

